home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 November / november_2001.iso / Browsers / Netscape 6.1 / n2p.xpi / install.js
Encoding:
JavaScript  |  2001-07-27  |  7.0 KB  |  266 lines

  1. // this function verifies disk space in kilobytes
  2. function verifyDiskSpace(dirPath, spaceRequired)
  3. {
  4.   var spaceAvailable;
  5.  
  6.   // Get the available disk space on the given path
  7.   spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
  8.  
  9.   // Convert the available disk space into kilobytes
  10.   spaceAvailable = parseInt(spaceAvailable / 1024);
  11.  
  12.   // do the verification
  13.   if(spaceAvailable < spaceRequired)
  14.   {
  15.     logComment("Insufficient disk space: " + dirPath);
  16.     logComment("  required : " + spaceRequired + " K");
  17.     logComment("  available: " + spaceAvailable + " K");
  18.     return(false);
  19.   }
  20.  
  21.   return(true);
  22. }
  23.  
  24. // this function deletes a file if it exists
  25. function deleteThisFile(dirKey, file)
  26. {
  27.   var fFileToDelete;
  28.  
  29.   fFileToDelete = getFolder(dirKey, file);
  30.   logComment(file + " file: " + fFileToDelete);
  31.   if(File.exists(fFileToDelete))
  32.   {
  33.     fileDelete(fFileToDelete);
  34.     return(true);
  35.   }
  36.   else
  37.     return(false);
  38. }
  39.  
  40. // this function deletes a folder (recursively) if it exists
  41. function deleteThisFolder(dirKey, folder)
  42. {
  43.   var fToDelete;
  44.  
  45.   fToDelete = getFolder(dirKey, folder);
  46.   logComment(folder + " folder: " + fToDelete);
  47.   if(File.exists(fToDelete))
  48.   {
  49.     File.dirRemove(fToDelete, true);
  50.     return(true);
  51.   }
  52.   else
  53.     return(false);
  54. }
  55.  
  56. // OS type detection
  57. // which platform?
  58. function getPlatform()
  59. {
  60.   var platformStr;
  61.   var platformNode;
  62.  
  63.   if('platform' in Install)
  64.   {
  65.     platformStr = new String(Install.platform);
  66.  
  67.     if (!platformStr.search(/^Macintosh/))
  68.       platformNode = 'mac';
  69.     else if (!platformStr.search(/^Win/))
  70.       platformNode = 'win';
  71.     else
  72.       platformNode = 'unix';
  73.   }
  74.   else
  75.   {
  76.     var fOSMac  = getFolder("Mac System");
  77.     var fOSWin  = getFolder("Win System");
  78.  
  79.     logComment("fOSMac: "  + fOSMac);
  80.     logComment("fOSWin: "  + fOSWin);
  81.  
  82.     if(fOSMac != null)
  83.       platformNode = 'mac';
  84.     else if(fOSWin != null)
  85.       platformNode = 'win';
  86.     else
  87.       platformNode = 'unix';
  88.   }
  89.  
  90.   return platformNode;
  91. }
  92.  
  93. function updateWinReg4Ren8dot3() 
  94. {
  95.   var fProgram      = getFolder("Program");
  96.   var fTemp         = getFolder("Temporary");
  97.  
  98.   //Notes:
  99.   // can't use a double backslash before subkey - Windows already puts it in.            
  100.   // subkeys have to exist before values can be put in.
  101.   var subkey;  // the name of the subkey you are poking around in
  102.   var valname; // the name of the value you want to look at
  103.   var value;   // the data in the value you want to look at.
  104.   var winreg = getWinRegistry() ;
  105.  
  106.   if(winreg != null) 
  107.   {
  108.     // Here, we get the current version.
  109.     winreg.setRootKey(winreg.HKEY_CURRENT_USER) ;  // CURRENT_USER
  110.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ;
  111.  
  112.     winreg.createKey(subkey,"");
  113.     valname = "ren8dot3";
  114.     value   = fProgram + "ren8dot3.exe " + fTemp + "ren8dot3.ini";
  115.     err     = winreg.setValueString(subkey, valname, value);
  116.   }
  117. }
  118.  
  119. function prepareRen8dot3(listLongFilePaths)
  120. {
  121.   var fTemp                 = getFolder("Temporary");
  122.   var fProgram              = getFolder("Program");
  123.   var fRen8dot3Ini          = getWinProfile(fTemp, "ren8dot3.ini");
  124.   var bIniCreated           = false;
  125.   var fLongFilePath;
  126.   var sShortFilePath;
  127.  
  128.   if(fRen8dot3Ini != null)
  129.   {
  130.     for(i = 0; i < listLongFilePaths.length; i++)
  131.     {
  132.       fLongFilePath   = getFolder(fProgram, listLongFilePaths[i]);
  133.       sShortFilePath  = File.windowsGetShortName(fLongFilePath);
  134.       if(sShortFilePath)
  135.       {
  136.         fRen8dot3Ini.writeString("rename", sShortFilePath, fLongFilePath);
  137.         bIniCreated = true;
  138.       }
  139.     }
  140.  
  141.     if(bIniCreated)
  142.       updateWinReg4Ren8dot3() ;
  143.   }
  144.  
  145.   return(0);
  146. }
  147.  
  148. function updateNet2FoneIni()
  149. {
  150.   var fWindows;
  151.   var wpN2PIni;
  152.   var wpErr;
  153.  
  154.   fWindows = getFolder("Windows");
  155.   wpN2PIni = getWinProfile(fWindows, "net2fone.ini");
  156.  
  157.   wpErr = wpN2PIni.writeString("AccountInfo", "source", "NS_USA106");
  158.   wpErr = wpN2PIni.writeString("URLS"       , "REGURL", "http://www.net2phone.com/cgi-bin/clienturl.cgi?brand=netscape&language=english&action=%X%&acctnum=%A%&source=%S%"); 
  159.   return(wpErr);
  160. }
  161.  
  162. function getN2PFolder()
  163. {
  164.   var fN2P;
  165.   var winReg = getWinRegistry();
  166.  
  167.   if(winReg != null)
  168.   {
  169.     winReg.setRootKey(winReg.HKEY_LOCAL_MACHINE);
  170.     subKey    = "SOFTWARE\\Net2Phone\\Install";
  171.     valueName = "Directory";
  172.     fN2Pstr   = winReg.getValueString(subKey, valueName);
  173.     if((fN2Pstr == null) || (fN2Pstr == ""))
  174.     {
  175.       subKey          = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion";
  176.       valueName       = "ProgramFilesDir";
  177.       fCommonFilesDir = winReg.getValueString(subKey, valueName);
  178.       fN2Pstr         = fCommonFilesDir + "\\Net2Phone\\";
  179.     }
  180.  
  181.     fN2P = getFolder("file:///", fN2Pstr);
  182.   }
  183.   else
  184.   {
  185.     logComment("getWinRegsitry() failed: " + winReg);
  186.   }
  187.  
  188.   return fN2P;
  189. }
  190.  
  191. // main
  192. var srDest;
  193. var err;
  194. var cErr;
  195. var fN2P;
  196. var fN2PFinal;
  197. var fN2PExecute;
  198. var fileN2PIni;
  199. var fWindows;
  200. var fTemp;
  201. var rv;
  202.  
  203. srDest = 2433;
  204. err    = initInstall("Net2Phone", "/IDT/Net2Phone", "10.2.8.0"); 
  205. logComment("initInstall() returned: " + err);
  206.  
  207. fN2PFinal = getN2PFolder();
  208. fTemp     = getFolder("Temporary");
  209. fN2P      = getFolder("Temporary");
  210. if(verifyDiskSpace(fN2P, srDest))
  211. {
  212.   setPackageFolder(fN2PFinal);
  213.   err  = addDirectory("/IDT/Net2Phone",
  214.                       "10.2.8.0",
  215.                       "net2phone",          // dir name in jar to extract 
  216.                       fN2P,                 // Where to put this file (Returned from getFolder) 
  217.                       "",                   // subdir name to create relative to communicatorFolder
  218.                       true);                // Force Flag 
  219.   logComment("addDirectory() returned: " + err);
  220.  
  221.   if(!err)
  222.   {
  223.     fWindows   = getFolder("Windows");
  224.     fileN2PIni = getFolder("file:///", fWindows + "net2fone.ini");
  225.     rv         = File.exists(fileN2PIni);
  226.     logComment("fileExists() returned: " + rv);
  227.     if(rv == false)
  228.     {
  229.       logComment("File not found: " + fileN2PIni);
  230.       fileN2PIni = getFolder("file:///", fTemp + "net2fone.ini");
  231.       cErr       = File.copy(fileN2PIni, fWindows);
  232.       logComment("File.copy() of " + fileN2PIni + " returned: " + cErr);
  233.     }
  234.     else
  235.     {
  236.       logComment("File found: " + fileN2PIni);
  237.       wpErr = updateNet2FoneIni();
  238.       logComment("updateNet2Fone returned: " + wpErr);
  239.     }
  240.   }
  241.   else
  242.     cancelInstall(err);
  243.  
  244.   // check return value
  245.   if(!err)
  246.   {
  247.     fN2PExecute = getFolder(fN2P, "setupN2P.exe");
  248.     err = fileExecute(fN2PExecute, "/nofax /noGUI /nostr");
  249.     logComment("fileExecute() returned: " + err);
  250.  
  251.     fileN2PIni = getFolder("file:///", fTemp + "net2fone.ini");
  252.     err = fileDelete(fileN2PIni);
  253.     logComment("fileDelete() returned: " + err);
  254.  
  255.     err = performInstall(); 
  256.     logComment("performInstall() returned: " + err);
  257.   }
  258.   else
  259.     cancelInstall(err);
  260. }
  261. else
  262.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  263.  
  264. // end main
  265.  
  266.